import axios from 'axios'
import useStore from '@/store/index.js'
import router from '@/router/index.js'

// 1. 创建请求实例，设置基础的请求地址
const request = axios.create({
  baseURL: 'https://shop.fed.lagounews.com/api'
})

// 2. 在请求拦截器中进行 token 设置，没有 tokne 值将不能访问接口地址
request.interceptors.request.use(config => {
  // 解构获取用户状态管理实例
  const { userStore } = useStore()
  if (userStore.userToken) {
    // 用户 token 存在，设置给请求头
    config.headers.Authorization = 'Bearer ' + userStore.userToken
  }
  // 返回被修改的配置对象
  return config
})

// 3. 在响应拦截器中，处理响应失败的情况
request.interceptors.response.use(config => {
  // 如果响应数据中的状态码为 110002，说明用户未登录访问了相关接口，这时跳转到登录页面，重新登录
  if (config.data.status === 110002) {
    router.push({
      name: 'login',
      // 记录当前路由，登录成功后，仍然跳转到当前路由地址
      query: {
        redirect: router.currentRoute.value.fullPath
      }
    })
  }
  // 必须返回被修改的配置对象，否者这里相关操作不生效
  return config
})
export default request
